/**
 * @file hybrid_mode_thread.h
 * @brief 混合模式线程 - 模式7，结合模拟数据和三摄像头功能
 * @version 1.0
 * @date 2025-06-07
 */

#ifndef HYBRID_MODE_THREAD_H
#define HYBRID_MODE_THREAD_H

#include <pthread.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// 混合模式线程状态
typedef enum {
    HYBRID_THREAD_IDLE = 0,     // 空闲状态
    HYBRID_THREAD_RUNNING,      // 运行中
    HYBRID_THREAD_STOPPING,     // 正在停止
    HYBRID_THREAD_STOPPED,      // 已停止
    HYBRID_THREAD_ERROR         // 错误状态
} HybridThreadState;

// 全局变量声明
extern pthread_t g_hybrid_thread;
extern volatile HybridThreadState g_hybrid_thread_state;
extern volatile bool g_hybrid_thread_exit;

/**
 * @brief 启动混合模式线程
 * 该线程结合模式5的模拟数据和模式10的摄像头捕获功能
 * 
 * @return int 成功返回0，失败返回非0
 */
int start_hybrid_mode_thread(void);

/**
 * @brief 停止混合模式线程
 * 
 * @return int 成功返回0，失败返回非0
 */
int stop_hybrid_mode_thread(void);

/**
 * @brief 获取混合模式线程状态
 * 
 * @return HybridThreadState 线程状态
 */
HybridThreadState get_hybrid_mode_thread_state(void);

/**
 * @brief 等待混合模式线程结束
 * 
 * @param timeout_ms 超时时间(毫秒)，-1表示无限等待
 * @return int 成功返回0，超时返回1，失败返回-1
 */
int wait_hybrid_mode_thread(int timeout_ms);

#ifdef __cplusplus
}
#endif

#endif /* HYBRID_MODE_THREAD_H */ 